using IQIGame.Onigao.Game;
using NetProtocol;

namespace IQIGame.Onigao.GamePlay
{
    public class CGameNetHandler : CNetHandler
    {
        private CGameNetHandler() { }
        public static CGameNetHandler Instance { get; } = new CGameNetHandler();

        public override void Init()
        {
            base.Init();

            NetProtocolHelper.Init();
            NetProtocolHelper.beginCallRequest = (messageId) =>
            {
                NetLockModule.Instance.SetLockState(messageId, 1);
            };

            NetProtocolHelper.endCallRequest = (messageId, code) =>
            {
                NetLockModule.Instance.SetLockState(messageId, 0);

                switch (messageId)
                {
                    case NetMessageId.gameServer_reconnectResult:
                    case NetMessageId.logicServer_reconnectResult:
                        //需要自定义code逻辑, 不走通用的错误码提示
                        break;
                    default:
                        NoticeModule.ShowErrorNotice(code);
                        break;
                }
            };

            Add(GameServerModule.Instance);
            Add(GameServerTestModule.Instance);
            Add(LogicServerModule.Instance);
            Add(LogicServerTestModule.Instance);
            Add(LoadPlayerModule.Instance);
            Add(PlayerModule.Instance);
            Add(CLevelLogicModule.Instance);
            Add(CBattleLogicModule.Instance);
            Add(RoomModule.Instance);
            Add(GameCmdModule.Instance);
            Add(ItemModule.Instance);
            Add(EquipmentModule.Instance);
            Add(HeroModule.Instance);
            Add(FormationModule.Instance);
            Add(QuestModule.Instance);
            Add(LevelModule.Instance);
            Add(BattleModule.Instance);
            Add(ChatModule.Instance);
            Add(MailModule.Instance);
            Add(MallModule.Instance);
            Add(PetModule.Instance);
            Add(MainCityModule.Instance);
            Add(FriendModule.Instance);
        }

    }
}
